There is a vast amount of information in the world today that is available by computer. For example, on the World Wide Web alone there are millions of web pages. In addition to the Internet, companies have set up local "intranets" for storing and accessing data for running their organizations. However, the sheer amount of available information is posing increasingly more difficult challenges to conventional approaches.
A major difficulty to overcome is that information relevant to a purpose of a user is often dispersed across the network at many sites. It is often time-consuming for a user to visit all these sites. One conventional approach is a search engine. A search engine is actually a set of programs accessible at a network site within a network, for example a local area network (LAN) at a company or the Internet and World Wide Web. One program, called a "robot" or "spider," pre-traverses a network in search of documents and builds large index files of keywords found in the documents.
A user of the search engine formulates a query comprising one or more keywords and submits the query to another program of the search engine. In response, the search engine inspects its own index files and displays a list of documents that match the search query, typically as hyperlinks. When a user activates one of the hyperlinks to see the information contained in the document, the user exits the site of the search engine and terminates the search process.
Search engines, however, have their drawbacks. For example, a conventional search engine suffers from obsolescence of data in its search indexes due to pre-traversing a network to index documents. Documents are constantly being updated, but it may take months for the new information to filter down to search engines. Furthermore, a search engine is oriented to discovering textual information only. In particular, conventional search engines are not well-suited to indexing information contained in structured databases, e.g. relational databases, and mixing data from incompatible data sources is difficult in conventional search engines.
Attempts have been made to present search results in an object-oriented fashion by homogenizing the search results into an "entity" that is an instance of a specified class, which may be hierarchically dependent upon another "base" class. A class specifies the attributes or properties of an entity, and a dependent class includes the attributes of the base class and additional attributes. A problem with such attempts is that the particular data returned for a particular entity is restricted to the attributes defined for the specified class of the entity. This restriction means that if the entity to be returned actually belongs to a dependent class, hierarchically dependent upon the specified class, the number of attributes returned to the user will be limited to the properties for the base class, not the dependent class. Consequently, some search results will be not be found and presented to the user. If, however, the user wants to check if a particular entity belongs to a dependent class, another query to the system has to be submitted, specifying the particular dependent class. This checking operation becomes more time consuming as more dependent classes are specified and more entities are found.